﻿using System;
using System.Collections.Generic;

namespace OurSite.Business.Picture
{
    public interface IPictureRepository
    {
        void Add(Picture img);
        void Update(Picture img);
        void Remove(Picture img);
        Picture GetById(Guid pictureId);
        Picture GetListingImageByEventID(Guid eventId);
        Picture GetBlankPicture();
        IList<Picture> GetByEventID(Guid eventId);
        IList<Picture> GetAllPictures();
        IList<Picture> GetAllFavoritePictures();
        IList<Picture> GetTopFavoritePictures(int numberToReturn);
        List<Picture> Search(PictureQuery query);

        #region Get Listing image
        Picture GetRegionListingPicture(string regionName);
        Picture GetStateListingPicture(string stateName);
        Picture GetDecadeListingPicture(string startYear, string endYear);
        Picture GetPeopleListingPicture(PeopleCategory peopleCategory);
        Picture GetCategoryListingPicture(string categoryName);
        #endregion

        #region Set Lising Image
        void SetCategoryListingImage(Guid pictureId, Guid categoryId);
        void SetRegionListingImage(Guid pictureId, string regionName);
        void SetStateListingImage(Guid pictureId, string stateName);
        void SetDecadeListingImage(Guid pictureId, string startYear, string endYear);
        #endregion

        #region Get All possible Lising Images
        IList<Picture> GetCategoryAllListingPicture(string categoryName);
        IList<Picture> GetRegionAllListingPicture(string regionName);
        IList<Picture> GetStateAllListingPicture(string stateName);
        IList<Picture> GetDecadeAllListingPicture(string startYear, string endYear);
        #endregion
        int GetNextPictureCode();
        int GetNextOrderByEventID(Guid eventId);
    }
}
